﻿using System;
using System.Collections.ObjectModel;
using Loki.Engine;

namespace Loki.UI
{
    /// <summary>
    /// Common interface for application bootstrapper.
    /// </summary>
    public interface IBootStrapper<TModelType, TMainViewModelType> : IApplicationModelAware<TModelType>, IDisposable
        where TMainViewModelType : ViewModel<TModelType>
    {
        /// <summary>
        /// Gets the main viewmodel.
        /// </summary>
        TMainViewModelType MainViewModel { get; }

        /// <summary>
        /// Gets the secondary models.
        /// </summary>
        ObservableCollection<ViewModel<TModelType>> ViewModels { get; }

        /// <summary>
        /// Initialize the application.
        /// </summary>
        void Initialize();
    }
}